using Gateway.IApplication.BaseInput;
using Gateway.IApplication.WorkFlow.Input;
using Gateway.IApplication.WorkFlow.Input.Design;
using Gateway.Infrastructure.AutoDI;

namespace Gateway.IApplication.WorkFlow;

/// <summary>
/// 工作流服务
/// </summary>
public interface IWorkFlowApp : IDependency
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<bool> Add(CreateWorkFlowInput input);
    /// <summary>
    /// 
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<bool> Update(UpdateWorkFlowInput input);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<bool> Disable(DisableInput input);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<bool> Remove(RemoveInput input);


    /// <summary>
    /// 设计流程
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<bool> Design(WorkFlowDesignInput input);
}